<HTML>

<SCRIPT>
function setFocus() {	
	if ((navigator.appName != "Netscape") && (parseFloat(navigator.appVersion) == 2)) {
	return;
	} else {
	self.focus();
	}
}
</SCRIPT><HEAD><TITLE>Index</TITLE></HEAD>

<BODY
	BGCOLOR		= #FFFFFF
	TEXT = #000000
onLoad="setFocus()";
>

<P>Names of design patterns appear in small capitals: e.g., A<FONT
SIZE=-1>DAPTER</FONT>.  Page numbers in bold indicate the definition
of a term. Numbers in italics indicate a diagram for the term.
Letters after a diagram's page number indicate the kind of diagram:
a "c" denotes a class diagram, an "i" denotes an interaction diagram,
and an "o" denotes an object diagram. For example, <I>88co</I>
means that a class and object diagram appears on page 88.</P>

<H2>I</H2>

<DL>

<DT>IconWindow
<A HREF="chap2fs.htm#appwin" TARGET="_mainDisplayFrame">53</A>,
<A HREF="chap2fs.htm#54c" TARGET="_mainDisplayFrame"><I>54c</I></A>,
<A HREF="pat4bfs.htm#motivation" TARGET="_mainDisplayFrame">151-152</A>,
<A HREF="pat4bfs.htm#motivation" TARGET="_mainDisplayFrame"><I>151c</I></A>,
<A HREF="pat4bfs.htm#appwin" TARGET="_mainDisplayFrame">157</A>
</DT>

<DT>Image
<A HREF="pat4gfs.htm#motivation" TARGET="_mainDisplayFrame"><I>207o</I></A>,
<A HREF="pat4gfs.htm#motivation" TARGET="_mainDisplayFrame"><I>208c</I></A>,
<A HREF="pat4gfs.htm#samplecode" TARGET="_mainDisplayFrame">213</A>
</DT>

<DT>ImageProxy<A HREF="pat4gfs.htm#motivation" TARGET="_mainDisplayFrame"><I>207o</I></A>,
<A HREF="pat4gfs.htm#motivation" TARGET="_mainDisplayFrame"><I>208c</I></A>
</DT>

<DT>Implementor</DT>

<DD>participant of B<FONT SIZE=-1>RIDGE</FONT>
<A HREF="pat4bfs.htm#structure" TARGET="_mainDisplayFrame"><I>153c</I></A>,
<A HREF="pat4bfs.htm#participants" TARGET="_mainDisplayFrame">154</A>
</DD>

<DT>implicit receiver, <I>see</I> <A HREF="index-R.htm#receiver" target="TEXT">receiver, implicit</A></DT>

<DT>incremental changes
<A HREF="pat5ffs.htm#implementation" TARGET="_mainDisplayFrame">287</A>
</DT>

<DT><a name="inheritance"></a>inheritance
<A HREF="chap1fs.htm#dynamicbinding" TARGET="_mainDisplayFrame"><B>15</B></A>,
<A HREF="chapAfs.htm#inheritance" TARGET="_mainDisplayFrame"><B>360</B></A>
</DT>

<DD>C++, defined in
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">17</A>
</DD>

<DD>class versus interface
<A HREF="chap1fs.htm#absclass" TARGET="_mainDisplayFrame">16</A>
</DD>

<DD>combined with polymorphism
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">18</A>
</DD>

<DD>compared with object composition
<A HREF="chap1fs.htm#intro_inheritance_versus_composition" TARGET="_mainDisplayFrame">18</A>, 
<A HREF="pat4dfs.htm#consequences" TARGET="_mainDisplayFrame">178</A>
</DD>

<DD>compared with parameterized types
<A HREF="chap1fs.htm#ada" TARGET="_mainDisplayFrame">21</A>
</DD>

<DD>dynamic
<A HREF="pat5hfs.htm#implementation" TARGET="_mainDisplayFrame">309</A>
</DD>

<DD>Eiffel, defined in
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">17</A>
</DD>

<DD>implementation
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">17</A>,
<A HREF="chapAfs.htm#inheritance" TARGET="_mainDisplayFrame">360</A>
</DD>

<DD>interface
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">17</A>,
<A HREF="chapAfs.htm#inheritance" TARGET="_mainDisplayFrame">360</A>
</DD>

<DD>mixin, <I>see</I> <A HREF="index-M.htm#mixin class" target="TEXT">mixin class</A></DD>

<DD>notation for
<A HREF="chap1fs.htm#dynamicbinding" TARGET="_mainDisplayFrame">15</A>,
<A HREF="chapBfs.htm#absclass" TARGET="_mainDisplayFrame"><B>364</B></A>,
<A HREF="chapBfs.htm#notation_object_diagram_notation" TARGET="_mainDisplayFrame"><I>365c</I></A>
</DD>

<DD>proper use of
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">18</A>
</DD>

<DD>reuse through
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">18</A>
</DD>

<DD>Smalltalk, defined in
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">17</A>
</DD>

<DT>inorder traversal, <I>see</I> <a href="index-T.htm#traversal" target="TEXT">traversal, inorder</a></DT>

<DT>instance, <I>see also</I> <A HREF="index-C.htm#class" target="TEXT">class, instance</A></DT>

<DD>ensuring uniqueness, <I>see</I> <A HREF="index-S.htm#S<FONT SIZE=-1>INGLETON</FONT>" target="TEXT">S<FONT SIZE=-1>INGLETON</FONT></A></DD>

<DD>variable
<A HREF="chap1fs.htm#dynamicbinding" TARGET="_mainDisplayFrame"><B>15</B></A>,
<A HREF="chapAfs.htm#instance" TARGET="_mainDisplayFrame"><B>360</B></A>
</DD>

<DT>instantiation
<A HREF="chap1fs.htm#dynamicbinding" TARGET="_mainDisplayFrame"><B>15</B></A>
</DT>

<DD>abstracting process of
<A HREF="chap2fs.htm#top" TARGET="_mainDisplayFrame">48</A>
</DD>

<DD>notation for
<A HREF="chap1fs.htm#dynamicbinding" TARGET="_mainDisplayFrame">15</A>,
<A HREF="chapBfs.htm#association" TARGET="_mainDisplayFrame"><B>364</B></A>,
<A HREF="chapBfs.htm#notation_object_diagram_notation" TARGET="_mainDisplayFrame"><I>365c</I></A>
</DD>

<DT>integrated circuit
<A HREF="pat5ifs.htm#knownuses" TARGET="_mainDisplayFrame">323</A>
</DT>

<DT>interaction diagram
<A HREF="chap1fs.htm#despatt-template" TARGET="_mainDisplayFrame">7</A>,
<A HREF="chapBfs.htm#top" TARGET="_mainDisplayFrame"><B>366</B></A>
</DT>

<DD>in B<FONT SIZE=-1>UILDER</FONT><A HREF="pat3bfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>99i</I></A>
</DD>

<DD>in C<FONT SIZE=-1>HAIN OF</FONT> R<FONT SIZE=-1>ESPONSIBILITY</FONT>
<A HREF="pat5afs.htm#224ci" TARGET="_mainDisplayFrame"><I>224i</I></A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame"><I>348i</I></A>
</DD>

<DD>in C<FONT SIZE=-1>OMMAND</FONT>
<A HREF="pat5bfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>237i</I></A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame"><I>347i</I></A>
</DD>

<DD>in M<FONT SIZE=-1>EDIATOR</FONT>
<A HREF="pat5efs.htm#mediator-eg-obj" TARGET="_mainDisplayFrame"><I>274i</I></A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame"><I>348i</I></A>
</DD>

<DD>in M<FONT SIZE=-1>EMENTO</FONT>
<A HREF="pat5ffs.htm#collaborations" TARGET="_mainDisplayFrame"><I>286i</I></A>
</DD>

<DD>in O<FONT SIZE=-1>BSERVER</FONT>
<A HREF="pat5gfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>295i</I></A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame"><I>347i</I></A>
</DD>

<DD>in V<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5kfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>335i</I></A>
</DD>

<DD>Lexi's Visitor<A HREF="chap2fs.htm#section_encapsulating_the_analysis" TARGET="_mainDisplayFrame"><I>74i</I></A>
</DD>

<DT>interface
<A HREF="chap1fs.htm#encapsulation" TARGET="_mainDisplayFrame"><B>13</B></A>
</DT>

<DD>benefits of programming to
<A HREF="chap1fs.htm#eiffel" TARGET="_mainDisplayFrame">18</A>
</DD>

<DD>bloat
<A HREF="pat5dfs.htm#motivation" TARGET="_mainDisplayFrame">257</A>
</DD>

<DD>conversion, <I>see</I> <A HREF="index-A.htm#A<FONT SIZE=-1>DAPTER</FONT>" target="TEXT">A<FONT SIZE=-1>DAPTER</FONT></A></DD>

<DD>for iteration
<A HREF="pat5dfs.htm#friend-iter" TARGET="_mainDisplayFrame">262</A>
</DD>

<DD>inheritance 
<A HREF="chap1fs.htm#encapsulation" TARGET="_mainDisplayFrame">13</A>,
<A HREF="chap1fs.htm#absclass" TARGET="_mainDisplayFrame">17</A>
</DD>

<DD>narrow versus wide in M<FONT SIZE=-1>EMENTO</FONT>
<A HREF="pat5ffs.htm#participants" TARGET="_mainDisplayFrame">285</A>
</DD>

<DD>specifying in C++
<A HREF="chap1fs.htm#absclass" TARGET="_mainDisplayFrame">17</A>
</DD>

<DD>simplifying subsystems, <I>see</I> <A HREF="index-F.htm#F<FONT SIZE=-1>ACADE</FONT>" target="TEXT">F<FONT SIZE=-1>ACADE</FONT></A></DD>

<DT>internal iterator, <I>see</I> <a href="index-I.htm#iterator" target="TEXT">iterator, internal</a></DT>

<DT>Interpreter
<A HREF="pat5cfs.htm#Interpreter" TARGET="_mainDisplayFrame"><B>243</B></A>
</DT>

<DD>combined with C<FONT SIZE=-1>OMPOSITE</FONT><A HREF="pat5cfs.htm#knownuses" TARGET="_mainDisplayFrame">255</A>
</DD>

<DD>combined with V<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5cfs.htm#consequences" TARGET="_mainDisplayFrame">247</A>,
<A HREF="pat5cfs.htm#relatedpatterns" TARGET="_mainDisplayFrame">255</A>
</DD>

<DD>in catalog summary
<A HREF="chap1fs.htm#cat-flywt" TARGET="_mainDisplayFrame">9</A>
</DD>

<a name="InterViews"></a>
<DT>InterViews</DT>

<DD>use of A<FONT SIZE=-1>BSTRACT</FONT> F<FONT SIZE=-1>ACTORY</FONT>
<A HREF="pat3afs.htm#knownuses" TARGET="_mainDisplayFrame">95</A>
</DD>

<DD>use of A<FONT SIZE=-1>DAPTER</FONT>
<A HREF="pat4afs.htm#et-use-adapter" TARGET="_mainDisplayFrame">148</A>
</DD>

<DD>use of C<FONT SIZE=-1>OMMAND</FONT>
<A HREF="pat5bfs.htm#knownuses" TARGET="_mainDisplayFrame">242</A>
</DD>

<DD>use of C<FONT SIZE=-1>OMPOSITE</FONT><A HREF="pat4cfs.htm#knownuses" TARGET="_mainDisplayFrame">172</A>
</DD>

<DD>use of D<FONT SIZE=-1>ECORATOR</FONT>
<A HREF="pat4dfs.htm#knownuses" TARGET="_mainDisplayFrame">182</A>
</DD>

<DD>use of F<FONT SIZE=-1>LYWEIGHT</FONT><A HREF="pat4ffs.htm#knownuses" TARGET="_mainDisplayFrame">205</A>
</DD>

<DD>use of O<FONT SIZE=-1>BSERVER</FONT>
<A HREF="pat5gfs.htm#knownuses" TARGET="_mainDisplayFrame">303</A>
</DD>

<DD>use of S<FONT SIZE=-1>INGLETON</FONT><A HREF="pat3efs.htm#knownuses" TARGET="_mainDisplayFrame">133</A>
</DD>

<DD>use of S<FONT SIZE=-1>TRATEGY</FONT><A HREF="pat5ifs.htm#implementation" TARGET="_mainDisplayFrame">320</A>,
<A HREF="pat5i.htm#knownuses" onClick="top.load('5i');"322-323></A>
</DD>

<DT>intrinsic state, <I>see</I> <A HREF="index-S.htm#state" target="TEXT">state, intrinsic</A></DT>

<DT>inversion of control flow
<A HREF="chap1fs.htm#section_frameworks" TARGET="_mainDisplayFrame">27</A>
</DT>

<DT>invitation
<A HREF="chap6fs.htm#top" TARGET="_mainDisplayFrame">358</A>
</DT>

<DT>Invoker</DT>

<DD>participant of C<FONT SIZE=-1>OMMAND</FONT>
<A HREF="pat5bfs.htm#participants" TARGET="_mainDisplayFrame">236</A>,
<A HREF="pat5bfs.htm#structure" TARGET="_mainDisplayFrame"><I>236c</I></A>,
<A HREF="pat5bfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>237i</I></A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame"><I>347i</I></A>
</DD>

<a name="IRIS Inventor"></a>
<DT>IRIS Inventor</DT>

<DD>use of V<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5kfs.htm#knownuses" TARGET="_mainDisplayFrame">344</A>
</DD>

<DT><a name="I<FONT SIZE=-1>TERATOR</FONT>"></a>I<FONT SIZE=-1>TERATOR</FONT>
<A HREF="pat5dfs.htm#Iterator" TARGET="_mainDisplayFrame"><B>257</B></A>
</DT>

<DD>combined with C<FONT SIZE=-1>OMPOSITE</FONT><A HREF="pat5dfs.htm#implementation" TARGET="_mainDisplayFrame">362</A>
</DD>

<DD>combined with V<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5kfs.htm#singledispatch" TARGET="_mainDisplayFrame">339</A>
</DD>

<DD>compared with V<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5kfs.htm#consequences" TARGET="_mainDisplayFrame">336</A>
</DD>

<DD>in catalog summary
<A HREF="chap1fs.htm#cat-flywt" TARGET="_mainDisplayFrame">9</A>
</DD>

<DD>use in Lexi
<A HREF="chap2fs.htm#editor_iterator-omt" TARGET="_mainDisplayFrame">69</A>
</DD>

<DT>Iterator
<A HREF="chap2fs.htm#editor_sec_iterator_class_and_subclasses" TARGET="_mainDisplayFrame">67</A>,
<A HREF="chap2fs.htm#glyph-trav" TARGET="_mainDisplayFrame"><I>67c</I></A>,
<A HREF="pat5dfs.htm#motivation" TARGET="_mainDisplayFrame"><I>258c</I></A>,
<A HREF="pat5dfs.htm#samplecode" TARGET="_mainDisplayFrame">263</A>,
<A HREF="chapCfs.htm#top" TARGET="_mainDisplayFrame">372</A>
</DT>

<DD>participant of I<FONT SIZE=-1>TERATOR</FONT>
<A HREF="pat5dfs.htm#participants" TARGET="_mainDisplayFrame">259</A>,
<A HREF="pat5dfs.htm#structure" TARGET="_mainDisplayFrame"><I>259c</I></A>
</DD>

<DT><a name="iterator"></a>iterator
<A HREF="chap2fs.htm#glyph-trav" TARGET="_mainDisplayFrame"><B>66</B></A>,
<A HREF="pat5dfs.htm#Iterator" TARGET="_mainDisplayFrame"><B>257</B></A>,
<A HREF="pat5kfs.htm#doubledispatch" TARGET="_mainDisplayFrame">339</A>
</DT>

<DD>access to aggregate
<A HREF="pat5dfs.htm#implementation" TARGET="_mainDisplayFrame">262</A>
</DD>

<DD>active
<A HREF="pat5dfs.htm#implementation" TARGET="_mainDisplayFrame">260</A>
</DD>

<DD>alternative to in Smalltalk
<A HREF="pat5dfs.htm#knownuses" TARGET="_mainDisplayFrame">270</A>
</DD>

<DD>controlling
<A HREF="pat5dfs.htm#implementation" TARGET="_mainDisplayFrame">260</A>
</DD>

<DD>cursor 
<A HREF="pat5dfs.htm#iter-cursor" TARGET="_mainDisplayFrame"><B>261</B></A>
</DD>

<DD>ensuring deletion of 
<A HREF="pat5dfs.htm#iter-dest" TARGET="_mainDisplayFrame">266</A>
</DD>

<DD>external 
<A HREF="pat5dfs.htm#iter-ext-int" TARGET="_mainDisplayFrame"><B>260</B></A>, 
<A HREF="pat5kfs.htm#iter-ext-int" TARGET="_mainDisplayFrame">339</A>, 
<A HREF="pat5dfs.htm#iter-external" TARGET="_mainDisplayFrame">269</A>
</DD>

<DD>interface to 
<A HREF="pat5dfs.htm#iter-interface" TARGET="_mainDisplayFrame">261</A>, 
<A HREF="pat5dfs.htm#iter-interface2" TARGET="_mainDisplayFrame">263</A>
</DD>

<DD>internal 
<A HREF="pat5dfs.htm#iter-ext-int" TARGET="_mainDisplayFrame"><B>260</B></A>, 
<A HREF="pat5dfs.htm#iter-internal" TARGET="_mainDisplayFrame">267</A>, 
<A HREF="pat5kfs.htm#iter-ext-int" TARGET="_mainDisplayFrame">339</A>, 
<I>see also</I> <A HREF="index-L.htm#ListTraverser" target="TEXT">ListTraverser</A>
</DD>

<DD>null 
<A HREF="pat5dfs.htm#NullIterator" TARGET="_mainDisplayFrame"><B>262</B></A>,
<I>see also</I> <a href="index-N.htm#NullIterator" target="TEXT">NullI<FONT SIZE=-1>TERATOR</FONT></a>
</DD>

<DD>over recursive structures 
<A HREF="pat5dfs.htm#iter-recur" TARGET="_mainDisplayFrame">262</A>
</DD>

<DD>parameterized with an operation 
<A HREF="pat5dfs.htm#iter-param" TARGET="_mainDisplayFrame">267</A>
</DD>

<DD>passive 
<A HREF="pat5dfs.htm#iter-passive" TARGET="_mainDisplayFrame">260</A>
</DD>

<DD>polymorphic 
<A HREF="pat5dfs.htm#iter-polyiter" TARGET="_mainDisplayFrame">258</A>, 
<A HREF="pat5dfs.htm#iter-use-poly" TARGET="_mainDisplayFrame">261</A>, 
<A HREF="pat5dfs.htm#iter-poly-enable" TARGET="_mainDisplayFrame">265</A>
</DD>

<DD>privileged access to Aggregate 
<A HREF="pat5dfs.htm#friend-iter" TARGET="_mainDisplayFrame">262</A>
</DD>

<DD>robust 
<A HREF="pat5dfs.htm#iter-robust" TARGET="_mainDisplayFrame"><B>261</B></A>
</DD>

</DL>

